﻿// 3501. 后缀子串排序.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <algorithm>
#include <string>
#include <vector>

using namespace std;
/*
https://www.acwing.com/problem/content/3504/
对于一个字符串，将其后缀子串进行排序。

例如 grain 其子串有： grain rain ain in n。

然后对各子串按字典顺序排序，即： ain grain in n rain。

输入格式
一行，一个由小写字母构成的字符串。

输出格式
将排好序的子串依次输出，每行输出一个。

数据范围
输入字符串长度不超过 1000。

输入样例：
grain
输出样例：
ain
grain
in
n
rain
*/

string str;

void solve() {
	vector<string> v;

	while (!str.empty()) {
		v.push_back(str);
		str = str.substr(1);
	}

	sort(v.begin(), v.end());

	for (auto e : v) {
		cout << e << endl;
	}

	return;
}


int main()
{
	while (cin >> str) {
		solve();
	}

	return 0;
}

